package filtros;

import java.io.IOException;
import java.util.Date;
import java.util.Iterator;

import javax.faces.FactoryFinder;
import javax.faces.context.FacesContext;
import javax.faces.context.FacesContextFactory;
import javax.faces.lifecycle.LifecycleFactory;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.annotation.WebFilter;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import org.apache.catalina.Lifecycle;

import beans.LoginBean;

import modelo.AccesoLog;
import modelo.Persona;
import dao.AccesoLogDao;
import dao.PersonaDao;
import excepciones.DaoException;

/**
 * Servlet Filter implementation class FiltroAcceso
 */
@WebFilter(filterName = "FiltroSesion", urlPatterns = {"/Paginas/*"})
public class FiltroSesion implements Filter {
 
	    //Pagina de login  
	    //private static final String SIGNON_PAGE_URI = "/login.jsf";  
	  
	    public void init( FilterConfig filterConfig ) throws ServletException{  
	    }  
	  
	    public void doFilter(ServletRequest req, ServletResponse res,FilterChain chain) throws IOException, ServletException
	    {
	    		HttpSession session;
	    		//LoginBean p = new LoginBean();
	    		
	    		
	    		if (req instanceof HttpServletRequest)
	    		{
	    		session = ((HttpServletRequest)req).getSession();
	    		
	    		LoginBean p = (LoginBean) session.getAttribute("loginBean");
	    		//FacesContext context = FacesContext.getCurrentInstance();
	    		//System.out.println(context);
	    		//LoginBean ul = (LoginBean) context.getExternalContext().getSessionMap().get("LoginBean");
	    		//System.out.println(p.getUsuario());
	    	
	    		
	    		if (p != null && p.isLoggedIn())
	    		{
	    		// en caso de que ya haya un usuario en la sesion, continuar con los
	    		// filtros, en este caso no tengo ninguno

	    		//chain.doFilter(req, res);
	    			System.out.println("hay sesion!!");
	    			System.out.println(p.getUsuario());
	    			//System.out.println(p);
	    			//System.out.println("persona = " + p.getUnaPersona());
	    			chain.doFilter(req, res);
	    			//((HttpServletResponse)res).sendRedirect("/jyaa_final/Paginas/Director/");
	    		}
	    		else
	    		{
	    			System.out.println("NO hay sesion!!");
		    		// si no existe usuario en sesion, redireccionamos a la inicio
		    		((HttpServletResponse)res).sendRedirect("/jyaa_final/");
	    		}
	    		}
	    		
	    }
	    		

		@Override
		public void destroy() {
			// TODO Auto-generated method stub
			
		}  
	  
 
		
	
}
